//package com.sdhs.file.utils;
//
//import java.io.File;
//import java.io.IOException;
//import java.io.InputStream;
//import java.net.URL;
//import java.net.URLEncoder;
//import java.nio.charset.StandardCharsets;
//
//import javax.servlet.http.HttpServletResponse;
//
//import com.baidubce.services.bos.model.CopyObjectResponse;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.web.multipart.MultipartFile;
//
//import com.alibaba.nacos.common.utils.IoUtils;
//import com.baidubce.auth.DefaultBceCredentials;
//import com.baidubce.services.bos.BosClient;
//import com.baidubce.services.bos.BosClientConfiguration;
//import com.baidubce.services.bos.model.BosObject;
//import com.baidubce.services.bos.model.PutObjectResponse;
//import com.mz.common.core.constant.ContractConstants;
//import com.mz.file.config.CephConfig;
//
//import lombok.extern.slf4j.Slf4j;
//
//@Slf4j
//@Component
//public class CephTemplate {
//
//	@Autowired
//    private CephConfig cephConfig;
//	
//	// 简单上传
//    public String putObjectSimple(String bucketName, String fileName, MultipartFile multipartFile) throws IOException {
//        // 初始化一个BosClient
//        BosClient client = getBosClient();
//        // 获取数据流
//        InputStream inputStream = multipartFile.getInputStream();
//        // 以数据流形式上传Object
//        PutObjectResponse putObjectResponse = client.putObject(bucketName, fileName, inputStream);
//        // 打印ETag、url
//        String eTag = putObjectResponse.getETag();
////        String urlStr = generatePresignedUrl(client, fileName);
//        String urlStr = ContractConstants.SLASH + bucketName + ContractConstants.SLASH + fileName;
//        log.info(ContractConstants.CEPH_PUT_OBJECT_SIMPLE, bucketName, fileName, eTag, urlStr);
//        // 关闭客户端
//        client.shutdown();
//        IoUtils.closeQuietly(inputStream);
//        return urlStr;
//    }
//    
//    /**
//     * 获取BosClient
//     * @return
//     */
//    public BosClient getBosClient() {
//    	BosClientConfiguration config = new BosClientConfiguration();
//        config.setCredentials(new DefaultBceCredentials(cephConfig.getAccessKey(), cephConfig.getSecretKey()));
//        config.setEndpoint(cephConfig.getUrl());
//        BosClient client = new BosClient(config);
//        return client;
//    }
//    
//    /**
//     * 获取文件下载URL
//     * @param client
//     * @param fileName
//     * @return
//     */
//    public String generatePresignedUrl(BosClient client, String fileName) {
//    	URL url = client.generatePresignedUrl(cephConfig.getBucketName(), fileName, cephConfig.getExpirationInSeconds());
//        String urlStr = url.toString();
//        return urlStr;
//    }
//    
//    public String generatePresignedUrl(BosClient client, String bucketName, String fileName, Integer expirationInSeconds) {
//    	URL url = client.generatePresignedUrl(bucketName, fileName, expirationInSeconds);
//        String urlStr = url.toString();
//        return urlStr;
//    }
//    
//    /**
//     * 获取文件下载URL
//     * @param fileName
//     * @return
//     */
//    public String generatePresignedUrl(String bucketName, String fileName, Integer expirationInSeconds) {
//    	// 初始化一个BosClient
//        BosClient client = getBosClient();
//        String urlStr = generatePresignedUrl(client, bucketName, fileName, expirationInSeconds);
//        // 关闭客户端
//        client.shutdown();
//        return urlStr;
//    }
//    
//    /**
//     * 文件下载
//     *
//     * @param bucketName   文件夹
//     * @param fileName     文件名称
//     * @param originalName 下载的文件名
//     * @param response     response
//     * @return
//     */
//    public void downloadFile(String bucketName, String fileName, String originalName, String suffix, HttpServletResponse response) {
//        try {
//        	// 初始化一个BosClient
//            BosClient client = getBosClient();
//            // 获取Object，返回结果为BosObject对象
//            BosObject object = client.getObject(bucketName, fileName);
//            // 获取Object的输入流
//            InputStream inputStream = object.getObjectContent();
//            if (StringUtils.isNotEmpty(originalName)) {
//                fileName = originalName;
//            }
//            response.reset();
//            response.setHeader(ContractConstants.CONTENT_DISPOSITION, 
//            		ContractConstants.ATTACHMENT_FILE_NAME + URLEncoder.encode(originalName, StandardCharsets.UTF_8.name()));
//            response.setCharacterEncoding(StandardCharsets.UTF_8.name());
//            String fileContent = FileContentType.contentType(suffix);
//            response.setContentType(fileContent);
//            FileUtil.writeFile(inputStream, response.getOutputStream());
//            // 关闭客户端
//            client.shutdown();
//            IoUtils.closeQuietly(inputStream);
//        } catch (Exception e) {
//        	log.error(e.getMessage(), e);
//        }
//    }
//
//    /**
//     * @param sourceBucketName 源文件夹
//     * @param sourceKey 源文件
//     * @param destinationBucketName 目标文件夹
//     * @param destinationKey 目标文件
//     * @return void
//     * @description 拷贝指定文件到指定地方
//     * @author jiyanlun
//     * @date 2024/10/16 15:42
//     */
//    public String copyProject(String sourceBucketName, String sourceKey, String destinationBucketName, String destinationKey){
//        // 初始化一个BosClient
//        BosClient client = getBosClient();
//        //
//        CopyObjectResponse copyObjectResponse = client.copyObject(sourceBucketName, sourceKey, destinationBucketName, destinationKey);
//        // 打印ETag、url
//        String eTag = copyObjectResponse.getETag();
//        String urlStr = generatePresignedUrl(client, destinationKey);
//        log.info(ContractConstants.CEPH_PUT_OBJECT_SIMPLE, sourceBucketName, destinationKey, eTag, urlStr);
//        // 关闭客户端
//        client.shutdown();
//        return urlStr;
//    }
//
//
//    /**
//     * @param bucketName
//     * @param fileName
//     * @param filePath
//     * @return java.lang.String
//     * @description 通过路径上传附件
//     * @author jiyanlun
//     * @date 2024/10/16 16:49
//     */
//    public String putObjectByFilePath(String bucketName, String fileName, String filePath){
//        // 初始化一个BosClient
//        BosClient client = getBosClient();
//        // 以数据流形式上传Object
//        PutObjectResponse putObjectResponse = client.putObject(bucketName, fileName, new File(filePath));
//        // 打印ETag、url
//        String eTag = putObjectResponse.getETag();
//        String urlStr = generatePresignedUrl(client, fileName);
//        log.info(ContractConstants.CEPH_PUT_OBJECT_SIMPLE, bucketName, fileName, eTag, urlStr);
//        // 关闭客户端
//        client.shutdown();
//        return urlStr;
//    }
//}
//
//
//
//
//
//
//
//
